package com.meatball.core.validation

import jakarta.validation.Constraint
import jakarta.validation.Payload
import kotlin.reflect.KClass

/**
 * TODO 定义一个注解，可以应用于字段或者方法参数
 *
 * @property message 错误提示
 * @property groups
 * @property payload
 */
@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME) // 注解在运行时保持有效
@Constraint(validatedBy = [RolePrefixValidator::class]) // 指定这个注解将由RolePrefixValidator类来验证
annotation class RoleNameValidity (
    val message: String = "角色名称无效", // 如果验证失败，返回的默认消息
    val groups: Array<KClass<*>> = [], // 用于分组验证，这里不做分组
    val payload: Array<KClass<out Payload>> = [] // 用于扩展验证的有效负载，通常不需要
)